home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1833 / 1833.xpi / chrome / yoono.jar / content / yoono / yoonoGlobToolbar.js < prev    next >
Text File  |  2009-12-16  |  9KB  |  227 lines

  1. /**
  2.    Global stuff for yoono toolbar
  3.    @author : Xavier Grosjean
  4.    Copyright 2006, Yoono SAS.
  5. **/
  6.  
  7.  
  8. // Juste apres une installation,
  9. // Il faut gerer l'affichage de boutons nouveaux dans cette version: s'ils sont customizables
  10. // ils n'apparaissent pas tout seuls. Mais on ne veut pas faire apparaitre d'anciens boutons que
  11. // l'utilisateur aurait supprim├⌐ par customisation...
  12. yoonoGlob.updateInterface = function() {
  13.     YOONO_LOG.debug('updateInterface');
  14.  
  15.     if(yoonoGlob.firstReleaseRun) {
  16.       YOONO_LOG.debug('Nouvelle version');
  17.       // Supprimer les anciennes prefs de stats
  18.       if(yoonoGlob.previousRelease < '5.0.5') {
  19.         YOONO_LOG.debug('Removing old stuff');
  20.         try {
  21.           var OLDPREF = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.yoono.stats.data.exposition.");
  22.           OLDPREF.deleteBranch("");
  23.           OLDPREF = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("extensions.yoono.stats.data.expo");
  24.           OLDPREF.deleteBranch("");
  25.           YNPREFBRANCH.clearUserPref('stats.data.running');
  26.           YNPREFBRANCH.clearUserPref('stats.data.run');
  27.         } catch(e) { }
  28.       }
  29.  
  30.       var numVersion = yoonoGlob.currentRelease.split('.');
  31.       numVersion.splice(3, 1);
  32.       numVersion = numVersion.join('.');
  33.       var url = '';
  34.       // If it's an install, display the install page for the release.
  35.       if(yoonoGlob.firstRun) {
  36.         url = 'http://www.yoono.com/releases/ff/' + numVersion + '/postinstall_new.html';
  37.         setTimeout(yoonoGlob.openUrlInNewTab, 1000, url, null);
  38.       } else {
  39.         // If it's an update, display the update page for the release.
  40.         url = 'http://www.yoono.com/releases/ff/' + numVersion + '/postinstall_update.html';
  41.         setTimeout(yoonoGlob.openUrlInNewTab, 1000, url, null);
  42.       }
  43.  
  44.       YNPREFBRANCH.setCharPref("release", yoonoGlob.currentRelease);
  45.     }
  46.  
  47.     // Au premier lancement de la 5.0.0, il faut installer le bouton Yoono de toggle des sidebar et toolbar
  48.     if(yoonoGlob.firstRun || (yoonoGlob.previousRelease < '5.0.4')) {
  49.       YOONO_LOG.debug('Premier lancement de la version 5 avec nouveau bouton toggle');
  50.       yoonoGlob.installYoonoButton();
  51.     }
  52. }
  53.  
  54. yoonoGlob.installYoonoButton = function() {
  55.   var palette = document.getElementById('navigator-toolbox').palette;
  56.   // On ne trouve pas les boutons par getElementById tant qu'ils sont dans la palette
  57.   // Mais m├⌐fiance, s'il y a eu un jour le bouton, il reste ds les caches d'extension... 
  58.   var yoonoToggleButton = document.getElementById('yoono-toggle-sb');
  59.   if(!yoonoToggleButton) {
  60.     yoonoToggleButton = palette.getElementsByAttribute('id', 'yoono-toggle-sb')[0];
  61.   }
  62.   var insertBeforeElt =  document.getElementById('urlbar-container');
  63.   if(!insertBeforeElt) {
  64.     insertBeforeElt =  document.getElementById('search-container');
  65.   }
  66.   if(!insertBeforeElt) {
  67.     insertBeforeElt =  document.getElementById('throbber-box');
  68.   }
  69.   if(insertBeforeElt) {
  70.     insertBeforeElt.parentNode.insertBefore(yoonoToggleButton, insertBeforeElt);
  71.     yoonoGlob.persistToolbarSet(insertBeforeElt.parentNode);
  72.   }
  73. }
  74.  
  75. // Mettre a jour et persister le currentset d'une toolbar 
  76. yoonoGlob.persistToolbarSet = function(tb) {
  77.   try {
  78.     var id = tb.getAttribute('id');
  79.     YOONO_LOG.debug('Persisting toolbar buttons for ' + id);
  80.     // Il faut parcourir la toolbar
  81.     var newset = '';
  82.     var eltId = '';
  83.     for(var offTb=0 ; offTb < tb.childNodes.length; offTb++) {
  84.         if(tb.childNodes[offTb].nodeName != 'toolbarspring') {
  85.           eltId = tb.childNodes[offTb].getAttribute('id');
  86.         } else {
  87.           eltId = 'spring';
  88.         }
  89.         newset +=  eltId + ',';
  90.     }
  91.     newset = newset.replace(/,$/,'');
  92.     YOONO_LOG.debug('newset '+ newset);
  93.     tb.setAttribute('currentset', newset);
  94.     document.persist(id, 'currentset');
  95.   } catch(e) {
  96.     YOONO_LOG.exception(e);
  97.   }
  98. }
  99.  
  100. // called from wizard ?
  101. var infoLayer;
  102. var YServices;
  103. yoonoGlob.onSidebarClose = function() {
  104.   if (YNPREFBRANCH.getBoolPref("warnedOnClose")) return;
  105.   
  106.   var scriptLoader =  Components.classes["@mozilla.org/moz/jssubscript-loader;1"].getService(Components.interfaces.mozIJSSubScriptLoader);
  107.   scriptLoader.loadSubScript("chrome://yoonosb/content/js/services/alerts/Layer.js");
  108.  
  109.   // Hack : used by Layer for errors ...
  110.   YServices = YOONO_CMPT.getYServices();
  111.   
  112.   if (infoLayer)
  113.     infoLayer.close();
  114.   infoLayer = new Layer();
  115.   infoLayer.setOpacityEffet(true);
  116.   infoLayer.resize(420,140);
  117.   infoLayer.move("relative-bottom",177,-7,document.getElementById("yoono-toggle-sb"));
  118.   
  119.   var css=[];
  120.   css.push('#main-box {position:absolute;left:0;top:0;width:420px;height:140px;}');
  121.   css.push('#border-box {font-family:Arial;font-size: 12px; position:absolute;top:8px;bottom:0;right:0;left:0; padding:15px; border: 2px solid black; background:white; -moz-border-radius: 5px;}');
  122.   css.push('#icon {float:left;margin-left:5px;width:38px;height:56px;background-image:url(chrome://yoono/skin/close-popup/i_icon.png);}');
  123.   css.push('#margin-box {margin-left: 60px;margin-right: 30px;}');
  124.   css.push('#checkbox {cursor: pointer;float: left;margin-top:2px;border: 1px solid #c0c0c0;-moz-border-radius: 3px; width: 10px; height: 10px;}');
  125.   css.push('#checkbox-text {cursor: pointer;margin-left: 18px;color: #999999;}');
  126.   css.push('#button-ok { padding: 3px; cursor: pointer; -moz-border-radius: 5px; color: white; background-image: url(chrome://yoono/skin/close-popup/button_bg.png); position: absolute; bottom: 10px; right: 30px; text-align: center; width: 40px;}');
  127.   css.push('#top-arrow {position:absolute;top:0;left:20px; width:21px; height: 10px; background-image: url(chrome://yoono/skin/close-popup/up_arrow.png);}');
  128.   if (navigator.platform.indexOf('Mac')==0) {
  129.     css.push('#border-box{-moz-border-radius:0;top:0;} #top-arrow{display:none;}');
  130.   }
  131.   
  132.   infoLayer.setStyleText(css.join(''));
  133.   var html=[];
  134.   html.push('<div id="main-box">');
  135.   html.push('  <div id="border-box">');
  136.   html.push('    <div id="button-ok">OK</div>');
  137.   html.push('    <div id="icon"></div>');
  138.   html.push('    <div id="margin-box">');
  139.   html.push('      <strong>Closing Yoono disconnects you from your services so you won\'t see any pop up notifications or IMs.</strong><br />');
  140.   html.push('      You can relaunch Yoono by clicking on the Yoono icon in your browser toolbar.<br/><br/>');
  141.   html.push('      <div id="checkbox-line" style="clear:both">');
  142.   html.push('        <div id="checkbox"></div><div id="checkbox-text">Don\'t show this message again</div>');
  143.   html.push('      </div>');
  144.   html.push('    </div>');
  145.   html.push('  </div>');
  146.   html.push('  <div id="top-arrow"></div>');
  147.   html.push('</div>');
  148.   infoLayer.setContent(html.join(''));
  149.  
  150.   infoLayer.show(function () {
  151.     var btn = infoLayer.getElementById('button-ok');
  152.     btn.addEventListener("click", function () {
  153.       infoLayer.close();
  154.       infoLayer=null;
  155.     },false);
  156.     var checkbox = infoLayer.getElementById('checkbox-line');
  157.     checkbox.addEventListener("click", function () {
  158.       YNPREFBRANCH.setBoolPref("warnedOnClose",true);
  159.       infoLayer.close();
  160.       infoLayer=null;
  161.     },false);
  162.   });
  163. }
  164. yoonoGlob.toggleSb = function(evt) {
  165.   if(!evt || ('yoono-toggle-sb' == evt.target.id)) {
  166.     try {
  167.       // returns new hidden flag (true if now hidden => closed)
  168.       var result = yoonoGlob.sidebar.toggle();
  169.       if(result) {
  170.         YOONO_CMPT.addStat(['clic', 'closesidebar', 'yoonobutton']);
  171.         yoonoGlob.onSidebarClose();
  172.       } else {
  173.         YOONO_CMPT.addStat(['clic', 'opensidebar', 'yoonobutton'])
  174.       }
  175.     } catch(e) {
  176.     alert(e);
  177.       YOONO_LOG.exception(e);
  178.       var container = document.getElementById('yoono-sidebar-box');
  179.       var splitter = document.getElementById('yoono-splitter');
  180.       var hidden = container.getAttribute('hidden') || false ;
  181.       if(hidden) {
  182.         container.removeAttribute('hidden');
  183.         splitter.removeAttribute('hidden');
  184.       } else {
  185.         container.setAttribute('hidden', "true");
  186.         splitter.setAttribute('hidden', "true");
  187.       }
  188.     }
  189.   }
  190. }
  191.  
  192. // Called from Yoono button menu, open the sidebar and the Share feature
  193. yoonoGlob.openShare = function() {
  194.   if(this.sidebar) {
  195.     var delay = 10;
  196.     if(!this.sidebar.isVisible()) {
  197.       this.sidebar.show();
  198.       delay = 200;
  199.     }
  200.     setTimeout(function() {
  201.       yoonoGlob.sidebar.sidebarMethods.methods.share(null);
  202.     }, delay);
  203.   }
  204. }
  205.  
  206. // Called from Yoono button menu, to open a yoodget
  207. yoonoGlob.openYoodget = function(aYuid) {
  208.   if(this.sidebar) {
  209.     var delay = 10;
  210.     if(!this.sidebar.isVisible()) {
  211.       this.sidebar.show();
  212.       delay = 200;
  213.     }
  214.     function tryOpeningYoodget() {
  215.       cptr --;
  216.       done = yoonoGlob.sidebar.sidebarMethods.methods.callYoodget(aYuid, -1, 'highlightYoodget');
  217.       if(!done && cptr) {
  218.         setTimeout(tryOpeningYoodget, delay);
  219.       }
  220.     }
  221.     var done = false;
  222.     var cptr = 20;
  223.     setTimeout(tryOpeningYoodget, delay);
  224.  
  225.   }
  226. }
  227.